﻿#pragma once
#include <QListWidget>
#include <QWidget>
#include <QVBoxLayout>
#include <QPropertyAnimation>

//这个类是历史记录栏界面组件，支持滑入/滑出动画，虽然这一块我查了挺多资料的，不过最后还是弄出来了，但是要熟练使用估计还需要多几次训练

class HistoryPopup : public QWidget {
    Q_OBJECT

public:
    //初始化遮罩、布局和动画
    explicit HistoryPopup(QWidget* parent = nullptr);

    ~HistoryPopup() {};

    // 展开或收起弹出窗口
    void toggle();

    // 从底部滑入显示
    void showAnimated();

    // 底部滑出隐藏
    void hideAnimated();

    // 添加一条记录项（用于展示历史记录）
    void addRecord(const QString& processExpression, const QString& resultExpression);

signals:
    // 历史项点击（用于通知控制器还原）
    void historyResultClicked(const QString& result);

protected:
    // 重载事件过滤器：处理遮罩点击、窗口缩放等事件
    bool eventFilter(QObject* obj, QEvent* event) override;

private:
    // 创建灰色遮罩层
    void createOverlay();

    // 创建内容区域布局
    void createContent();


private:
    //灰色背景遮罩
    QWidget* m_pOverlay = nullptr;

    //垂直内容布局
    QVBoxLayout* m_pContentLayout = nullptr;

    //动画控制器
    QPropertyAnimation* m_pAnimation = nullptr;

    //当前是否可见
    bool m_visible = false;

    //是否无记录
    bool m_isHistoryEmpty = true;

    //历史列表组件
    QListWidget* m_phistoryList = nullptr;

};
